/*
 * config.c
 *
 *  Created on: 21/10/2011
 *      Author: utn_so
 */



#include "config.h"

int leerConfig(char *arch, struct ParametrosRaid *parametros)
{
        char *ptr, cadena[80+1], campo[80+1];
        FILE *fd;

       if ((fd = fopen(arch, "r")) == NULL)
        {
                printf ("\nERROR AL ABRIR PARA LECTURA EL ARCHIVO %s !!!!!\n", arch);
                return 0;
        }
        log("RAID", "log.txt", "INFO","Abriendo el archivo para lectura\n");
        while (fgets(cadena, 80+1, fd) != NULL) {

                if (cadena[0] != '#' && cadena[0] != '\n')
                {
                        cadena[strlen(cadena)-1] = '\0';
                        ptr = strtok (cadena, ":" );
                        while ( ptr != NULL )
                        {
                                strcpy(campo,ptr);
                                ptr = strtok (NULL,":");
                                if ( ptr == NULL )
                                {
                                        printf("\nERROR NO HAY NINGUN DATO EN EL CAMPO %s !!!!!\n",campo);
                                        return 0;
                                }

                                if (cargarParametros(parametros, ptr, campo) == 1)
                                        return 0;

                                ptr = strtok ( NULL, ":\0" );
                        }
                }
        }

        fclose(fd);
   return 1;
}


/******************************************************************************
* FUNCION: cargarParametros()                                                                                                                                   *
* DESCRIP:      -Verifica el valor del parametro en el archivo de configuracion *
*                               -Inicializa la estructura de parametros                                                                 *
* DEVUELVE: Si no carga el parametro 1, si lo carga 0                                                                   *
******************************************************************************/

int cargarParametros(struct ParametrosRaid *parametros, char *dato, char *campo)
{

        if (strcmp(campo, "PUERTO") == 0) {
                parametros->port = htons(atoi(dato));
                return 0;
        }
        if (strcmp(campo, "FLAG") == 0) {
                parametros->flag = atoi(dato);
                return 0;
        }

        log("RAID", "log.txt", "ERROR","Parametro Desconocido.\n");
        printf("Parametro Desconocido.\n");
   return 1;
}



